EFCF Use Case PostalCodes Selecting
Probleem
We beginnen met het bestuderen van de PostalCodes Selecting use case te bestuderen in Mikmak use cases PostalCodes.
Design
Als de gebruiker op de link Ga naar Postcodes klikt op de Index pagina van de Home sectie van de website, gaat hij naar de Selecting pagina van de PostalCodes sectie. Wanneer de pagina geladen worden halen we alle postcodes en de plaatsnamen op de PostalCodes tabel van de database en tonen die. Voor elke postcode voegen we een link toe waarmee de beheerder de postcode kan updaten of deleten.
Oplossing
Model
Het model is al gemaakt in EFCF PostalCodes Entiteit.
View
- We moeten eerst de Index view van Home sectie van onze website wijzigen. Er moet een link op geplaatst worden waarmee de beheerder naar de Selecting pagina van PostalCodes sectie kan gaan. De Index view staat in de map Views/Home.
@{ Layout = "~/Views/Shared/_LayoutPage.cshtml"; } @ViewBag.Message <ul> <li><a href="/Home/CreateDatabase">Creëer database</a></li> <li>@Html.ActionLink("Maak de database", "CreateDatabase", "Home")</li> <li>@Html.ActionLink("Ga naar postcodes", "Selecting", "PostalCodes")</li> </ul> <div> <label>Database</label> <label>@ViewBag.DatabaseMessage</label> </div>
- We moeten een Selecting pagina toevoegen aan de PostalCodes sectie van de website.Daar moeten twee zaken toegevoegd worden:
- We moeten de postcodes en de plaatsnamen tonen.
@model IEnumerable<LerenWerkenMetEF.Models.PostalCodes> @{ Layout = "~/Views/Shared/_LayoutPage.cshtml"; } @ViewBag.Message <ul> <li>@Html.ActionLink("Voeg een postcode toe", "Inserting", "PostalCodes")</li> </ul> <div> @if (Model.Any()) { <table class="table"> <tr> <th>@Html.DisplayNameFor(model => model.PostalCode)</th> <th>@Html.DisplayNameFor(model => model.Location)</th> <th></th> </tr> @foreach (var item in Model) { <tr> <td>@Html.DisplayFor(modelItem => item.PostalCode)</td> <td>@Html.DisplayFor(modelItem => item.Location)</td> <td> @Html.ActionLink("Updating", "Updating", new { id = item.Id }) | @Html.ActionLink("Details", "Details", new { id = item.Id }) | @Html.ActionLink("Delete", "Delete", new { id = item.Id }) </td> </tr> } </table> } else { <p>Geen postcodes gevonden!</p> } </div>
- We moeten de ModelState uitlezen en eventuele validatie-foutmeldingen aan de gebruiker tonen. Dat doen we vlak onder de lijst met postcodes:
<p style="color:red;"> @if (ViewData.ModelState.Any()) { // vooraleer trefwoord in dictionary op te zoeken, moet je // nagaan of het trefwoord wel bestaat, anders krijg je een // null foutmelding if (ViewData.ModelState.ContainsKey("Ongeldige gegevens")) { foreach (var error in ViewData.ModelState["Ongeldige gegevens"].Errors) { <span class="error">@error.ErrorMessage</span> } } } </p>
- We moeten de postcodes en de plaatsnamen tonen.
Controller
We moeten nog een controller toevoegen met de naam PostalCodesController
om de request van de gebruiker om naar de Selecting pagina van PostalCodes sectie te gaan, af te handelen. Maak een klassenbestand in de map Controllers met de naam PostalCodesController.cs en voeg een actie-methode toe met de naam Selecting
:
using System.Web.Mvc; namespace LerenWerkenMetEFCF.Controllers { public class PostalCodesController : Controller { private Models.MyEntities db = new Models.MyEntities(); public ActionResult Selecting() { ViewBag.Message = "Beheer postcodes"; return View(db.PostalCodes); } } }